package com.cskaoyan.typehandler;//
//package com.zjt.typehandler;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import lombok.SneakyThrows;
//import org.apache.ibatis.type.JdbcType;
//import org.apache.ibatis.type.MappedJdbcTypes;
//import org.apache.ibatis.type.MappedTypes;
//import org.apache.ibatis.type.TypeHandler;
//
//import java.sql.CallableStatement;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.util.ArrayList;
//import java.util.List;
//
//@MappedTypes(List.class)
//@MappedJdbcTypes(JdbcType.VARCHAR)
//public class IntegerListTypeHandler implements TypeHandler<List<Integer>> {
//
//    //Json
//    ObjectMapper objectMapper = new ObjectMapper();
//
//    //输入映射 List<Integer → String
//    //index:输入映射过程中，预编译 占位符的顺序
//    @SneakyThrows
//    @Override
//    public void setParameter(PreparedStatement preparedStatement, int index, List<Integer> integers, JdbcType jdbcType) throws SQLException {
//        String value = objectMapper.writeValueAsString(integers);
//        preparedStatement.setString(index,value);
//    }
//    //输出映射 String → List<Integer
//    @Override
//    public List<Integer> getResult(ResultSet resultSet, String columnName) throws SQLException {
//        String result = resultSet.getString(columnName);
//        return transfer(result);
//    }
//
//    @Override
//    public List<Integer> getResult(ResultSet resultSet, int index) throws SQLException {
//        String result = resultSet.getString(index);
//        return transfer(result);
//    }
//
//    @Override
//    public List<Integer> getResult(CallableStatement callableStatement, int index) throws SQLException {
//        String result = callableStatement.getString(index);
//        return transfer(result);
//    }
//
//    @SneakyThrows
//    private List<Integer> transfer(String result) {
//        if (result == null || "".equals(result)) {
//            return new ArrayList<Integer>();
//        }
//        List<Integer> integers = objectMapper.readValue(result, List.class);
//        return integers;
//    }
//}
//
